package zengqiang.day04

import zengqiang.day03.adas.setList1

/**
 * 扩展函数：不改变已有类的情况下，为类添加新的函数
 */
fun main(args: Array<String>) {
    var name: String? = null
    println(name?.isEmpty()) //null
    //解析：因为name本身就是null，kotlin中？代表如果是null则返回本身，否则才执行后续方法判断empty()

    //解决方案：
    println(name.isEmpty1())//true

    //子类调用父类扩展函数
    val s= S1()
    s.sayHi() //F1打招呼
    //解析：子类可以使用父类的扩展函数，=但是和父类成员函数区别就是
    //成员函数标记位为open然后子类可以重写，但是扩展函数不能重写
}

fun String.isEmpty(): Boolean {
    return this == null || this.length == 0
}

//扩展非空类型的String
fun String?.isEmpty1(): Boolean {
    return this == null || this.length == 0
}


//父类扩展函数子类调用
open class F1
fun F1.sayHi(){
    println("F1打招呼")
}
class S1:F1()